#ifndef __DIS_MANAGER_H
#define __DIS_MANAGER_H


#include "font_manager.h"
//使用NULL需要包含某些头文件，所以我们可以自己定义一下
#ifndef NULL
#define NULL (void *)0
#endif
//需要显示的照片的大小以及其存放的地址
typedef struct DispBuff {
	int iXres;
	int iYres;
	int iBpp;//数据类型是多少位
	char *buff;
}DispBuff, *PDispBuff;

//图片的位置以及大小
/*typedef struct Region{
	int iLeftUpX;
	int iLeftUpY;
	int iWidth;
	int iHeigh;
}Region,*PRegion;//因为在很多文件都用到了，所以单独拿出去，以防止交叉包含
*/

typedef struct DispOpr{
	char *name;//名字 (用来区分是在什么设备上显示
	int (*DeviceInit)(void);//要用（*函数名）这种方式才能定义一个函数指针
	int (*DeviceExit)(void);
	int (*GetBuffer)(PDispBuff ptDispBuff);//获得一块设备的内存
	int (*FlushRegion)(PRegion ptRegion, PDispBuff ptDispBuff);//刷出某个区域(感觉类似将图片显示在某个位置）
	struct DispOpr *ptNext;//可能会支持多个设备（即可能可以在LCD屏显示，也可能可以在电脑显示屏显示等），这里用来存储下一个可用于显示设备的信息

}DispOpr,*PDispOpr;

void RegisterDisplay(PDispOpr ptDisOpr);
void FramebufferInit(void);

void DisplayInit(void);
int InitDefaultDisplay(void);
int SelectDefaultDisplay(char *name);
int PutPixel(int x, int y, unsigned int dwColor);
int FlushDisplayRegion(PRegion ptRegion, PDispBuff ptDispBuff);
PDispBuff GetDisplayBuffer(void);
void DrawFontBitMap(PFontBitMap ptFontBitMap, unsigned int dwColor);
void DrawTextInRegionCentral(char *name,PRegion ptRegion,unsigned int dwColor);
void DrawFontBitMap(PFontBitMap ptFontBitMap, unsigned int dwColor);
void DrawRegion(PRegion ptRegion, unsigned int dwColor);



#endif

